iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0
Modern Web

JavaScript 30 days系列 第 2

day#02 型別

  • 分享至 

  • xImage
  •  

型別

ES6之後,JavaScript共有以下幾種資料型別

  • String
  • Number
  • Object
  • Function
  • null
  • undefined
  • Symbol

然後,在JavaScript中,不管什麼型別,其實都是物件
初學者只要先記住這句話,背後的含義在後面有機會在做介紹。

String

使用成對的 ', ", ` 符號來包裹文字就是字串

範例:

    const str1 = 'I'    // "I"
    const str2 = "am"   // "am"
    const str3 = `${str1} ${str2} Cian.`  // "I am Cian."
    
    typeof str1   // string

Number

宣告數字特別簡單,直接給數字就好,不用使用任何字元標注

範例:


    const num1 = 100
    const num2 = NaN
    const num3 = Infinity
    
    typeof num1  // "number"

Tip:**NaN** 是 not a number 的意思,在JavaScript中, **NaN**也是數字的一種關鍵字

Tip:**Infinity** 無限,一樣是屬於數字的一種關鍵字

Object

物件在JavaScript中是一個特別的存在
實際上的物件是有許多特性的,這裡先用精簡的範例來說明

    const obj = {}  // 用成對的大括弧來表示物件
    const obj2 = {
    	a: 100,
    	b: 'hello',
    	c: function () {
    		console.log(this.b)
    	}
    }
    
    // obj2 比較複雜,這個物件帶有2個屬性 "a", "b"
    // 且帶有方法 "c"
    
    typeof obj2  // "object"

Function

函示,就像day#1所說的那樣,函示就像攪拌機,你給他材料,他幫你做出產品

    function blender (fruit, water, sugar) {
    	// do something with fruit + water + sugar
    	const juice = fruit + water + sugaar
    	return juice
    }

null

null 是空值的意思,如果你第一次接觸到這個值,可能會有點沒概念,但不要把它想得太複雜,它就只是一個代表 "空"或是"沒有東西" 的值。

    const empty = null
    
    typeof empty  // "object"

Tip:使用型別檢查 typeof 檢查 null會得到 "object",這很奇怪,但是事實。

undefined

undefined 就如字面上那樣,是沒有定義的意思,沒有定義跟空值並不相同。


    const var1
    const var2 = undefined
    
    typeof var1  // "undefined"

上面這個範例中, var1var2 都是 undefined,因為常數 var1雖然被宣告了,但沒被賦予任何值,所以是 undefined,而 var2則是被明確定的宣告值是 undefined

Tip:函數中若沒有 return關鍵字,會自動回傳 undefined

Symbol

符號的用途比較特別,符號永遠不會與其符號值相等
符號是唯一的存在,目前較常用來模擬物件的私有屬性。

    const smb1 = Symbol('123')
    const smb2 = Symbol('123')
    
    smb1 === smb2  // false

上面這個範例主要是想表達,即便我們傳達給 Symbol一樣的值,他們一樣不會相等。

JavaScript 的型別還有許多值得更深入討論的部分
會在其他主題關連到的時候說明。


上一篇
day#01 宣告
下一篇
day#03 條件式
系列文
JavaScript 30 days3
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言